package com.lry.netty01.server.entity;

import com.lry.netty01.server.utils.ByteUtils;
import com.lry.netty01.server.utils.CommandUtil;

/**
 * 场景：比如一个空调控制温度，温度通过tcp传给服务器，然后服务器可以发送操作包调整温度
 */
public class FixedFrame {
    //注册指令：10 01 0001 00 02 16
    //心跳包： 10 02 0001 00 03 16
    //报警包：10 03 0001 01 05 16
    private byte start = CommandUtil.START;//包头

    private byte cmd;//包的类型 1=注册包，2=心跳包，3=报警/信息包，4=操作包

    private short devId;//设备ID

    //data对于注册包和心跳包无效data=0
    // 对于报警包，data就是客户端返回过来的温度
    // 对于操作包来说data 就是服务端发送给客户端的数据，我希望温度调整为这个值
    private byte data;

    private byte cs;//检验和 cmd,devId,data的二进制8位组和

    private byte end = CommandUtil.END;//包尾

    public FixedFrame() {
    }

    public FixedFrame(byte cmd, short devId, byte data) {
        this.cmd = cmd;
        this.devId = devId;
        this.data = data;
        this.cs = ByteUtils.getCS(cmd,devId,data);
    }

    public byte getStart() {
        return start;
    }


    public byte getCmd() {
        return cmd;
    }

    public void setCmd(byte cmd) {
        this.cmd = cmd;
        this.cs = ByteUtils.getCS(cmd,devId,data);
    }

    public short getDevId() {
        return devId;
    }

    public void setDevId(short devId) {
        this.devId = devId;
        this.cs = ByteUtils.getCS(cmd,devId,data);
    }

    public byte getData() {
        return data;
    }

    public void setData(byte data) {
        this.data = data;
        this.cs = ByteUtils.getCS(cmd,devId,data);
    }

    public byte getCs() {
        return cs;
    }

    public void setCs(byte cs) {
        this.cs = cs;
    }

    public byte getEnd() {
        return end;
    }

    @Override
    public String toString() {
        return "FixedFrame{" +
                "start=" + start +
                ", cmd=" + cmd +
                ", devId=" + devId +
                ", data=" + data +
                ", cs=" + cs +
                ", end=" + end +
                '}';
    }
}
